Device and method for replacing terms in documents with hyperlinks

ABSTRACT

A computer-implemented method of controlling content includes receiving an input from the user and monitoring content in an application program or content exchanged between the application program and an operating system residing at the user&#39;s computer system. The method includes determining whether monitored content corresponds to a predetermined advertisement. If the monitored content corresponds to the predetermined advertisement, the predetermined advertisement is replaced with another predetermined advertisement based on the user input.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of co-pending U.S. patentapplication Ser. No. 11/169,144, filed Jun. 28, 2005. Benefit ofpriority of the above-referenced application with a filing date of Jun.28, 2005 is hereby claimed, and the disclosure of this application isincorporated in its entirety herein. U.S. patent application Ser. No.11/169,144 is a continuation of U.S. patent application Ser. No.09/507,967 (now U.S. Pat. No. 6,912,571), filed Feb. 22, 2000. Benefitof priority of the above-referenced application with a filing date ofFeb. 22, 2000 is hereby claimed, and the disclosure of this applicationis incorporated in its entirety herein.

TECHNICAL FIELD

This invention relates to content replacement, and more particularly tothe replacement of an advertisement with another advertisement, othercontent, or no content.

BACKGROUND

Referring to FIG. 1, a multimedia computer system 100 is illustratedwhich represents a typical hardware setup for executing software thatallows a user to perform tasks such as communicating with other computerusers, accessing various computer resources, and viewing, creating, orotherwise manipulating electronic content—that is, any combination oftext, images, movies, music or other sounds, animations,three-dimensional virtual worlds, and links to other possiblydistributed objects. The system 100 includes various input/output (I/O)devices (mouse 102, keyboard 104, display or television screen 106,remote controller 108, printer 110) and a general purpose computer 112having a central processor unit (CPU) 114, an I/O unit 116 and a memory118 that stores data and various programs such as an operating system120, and one or more application programs 122. The various I/O devicesmay be connected to the computer 112 via a wireless link (as shown bythe dashed line for the remote controller 108) or a direct link.

The operating system 120 is a software program that manages the basicoperations of a computer system. The operating system 120 determines howthe computer main memory will be apportioned, how and in what ordertasks assigned to it are handled, how it will manage the flow ofinformation into and out of the main processor 114, how it will getmaterial to a printer for printing, to the screen 106 for viewing, howit will receive information from the keyboard 104. In addition, theoperating system 120 may manage the transfer of multimedia informationto display devices. In short, the operating system 120 handles thecomputer's basic housekeeping. Examples of operating systems includeMS-DOS, UNIX, PICK, MS-Windows, and Linux.

An application program 122 or application is a software program thatcarries out some useful task. Examples of applications include databasemanagers, spreadsheets, communications packages, graphics programs, wordprocessors, and browsers.

The computer system 100 also typically includes some sort ofcommunications card or device 124 (for example, a telephone, computernetwork, or cable line). A content provider provides access to networkcontent in a network 126 in addition to various services associated withthe content. Examples of content providers include AT&T WorldNet, UUNet,and America Online.

Additionally, for multimedia computer systems, a user of the system 100can watch television or view web pages and otherwise “surf” theInternet. In this regard, the computer 112 might include a specialpurpose computer, referred to as a set top device that is used inconnection with television sets for viewing web pages on the Internet.In such a special purpose computer, a television tuner 128 is includedfor receiving broadcast and/or cable television signals 130. The monitorin such a multimedia system might correspond to a computer monitor, atelevision monitor, or any combination of both.

As shown in FIG. 2, a user of the computer system 100 can accesselectronic content or other resources either stored locally at theuser's own client system 202 (for example, a personal or laptopcomputer) or remotely at one or more server systems 200. An example of aserver system is a host computer that provides subscribers with onlinecomputer services such as, for example, e-mail, e-commerce, chat rooms,Internet access, electronic newspapers and magazines. Users of a hostcomputer's online services typically communicate with one or morecentral server systems 200 through client software executing on theirrespective client systems 202. This may or may not include proxy serverfunctionality. Thus, the user of the client station 202 may connect tothe server 200 via a traditional modem 204, a special integrated servicedigital network (ISDN) modem 206, or via a TCP/IP protocol 208.

In practice, a server system 200 typically will not be a singlemonolithic entity but rather will be a network of interconnected servercomputers, possibly physically dispersed from each other, each dedicatedto its own set of duties and/or to a particular geographical region. Insuch a case, the individual servers are interconnected by a network ofcommunication links, in known fashion.

As mentioned above, one type of application program is a browser. Abrowser is an example of client software that enables users to accessand view electronic content stored either locally or remotely, such asin a network environment (local area network (LAN), intranet, Internet).A browser typically is used for displaying documents described inHyper-Text Markup Language (HTML) and stored on servers connected to anetwork such as the Internet.

A user instructs a browser to access an HTML document, or web page, byspecifying a network address—or Uniform Resource Locator (URL)—at whicha desired document resides. In response, the browser contacts thecorresponding server hosting the requested web page, retrieves the oneor more files that make up the web page, and then displays the web pagein a window on the user's screen 106.

FIG. 3 is a screen shot of a browser application 300 (Internet Explorer)displaying a typical HTML document, or web page 302. As shown therein, asingle web page may be composed of several different files potentiallyof different data types 304 (for example, text, images, virtual worlds,sounds, or movies). In addition, a web page can include links 306, orpointers, to other resources (for example, web pages, individual files,or broadcast television stations) available on the network or throughthe television signal 130. Each link has an associated URL pointing to alocation on the network. When a user clicks on, or otherwise selects adisplayed link, the browser automatically will retrieve the web page orother resource corresponding to the link's associated URL and display itto, or execute it for, the user.

An advertisement 308 is displayed in the browser application 300 forVISA. In this case, the originator of content (presumably VISA) displaysan image of a VISA card (which resembles the VISA logo) along with agraph of annual percentage rates associated with credit cards.

Content filtration systems may be used to manage and/or present contentchoices to the user. One example of such a system is a portal whichconvinces users to visit the portal web site and provides, at a minimum,search engines, free e-mail, instant messaging and chat, web hosting.Content filtration systems could provide a user with content fromselected channels and sources by automatically delivering the content tothe user's computer via the Internet at user-specified intervals(referred to as “push” delivery). Some content filtration systems promptthe user to actively rank content choices (both likes and dislikes).

A content filtration system may monitor, block and even report contentusage to the user or another user that supervises the user. The contentfiltration system might block or deny content that the supervisory useror the user finds inappropriate, for example, vulgar language,pornography, or hate literature. The content filtration system mightprovide a protective or defensive gateway to certain users—for example,a firewall limits exposure of a computer or group of computers to anattack from outside. Firewalls are often used on a local area network(LAN) connected to the Internet. The firewall enforces a virtualboundary between two or more networks.

SUMMARY

Various implementations may include one or more of the followingfeatures.

In one implementation, a computer-implemented method of controllingcontent includes receiving input from a user and monitoring content inan application program or content exchanged between the applicationprogram and an operating system residing at the user's computer system.The method includes determining whether monitored content corresponds toa predetermined advertisement. If the monitored content corresponds tothe predetermined advertisement, the predetermined advertisement isreplaced with another predetermined advertisement based on the userinput.

Because an advertisement is replaced based on user input, the methodprovides the user with a way of obtaining more useful and relevantinformation. For example, an advertisement for a remote company may bereplaced with an advertisement for a company local to the user.Furthermore, entities related to the advertisements may agree upon thereplacement technique and effectively act to co-brand each other. Thisprovides one of the entities with the ability to reach out to users thatwouldn't normally be reached.

In another implementation, a method of filtering content relating to anoriginator of content includes receiving input from a user selecting anarbitrary originator of content and receiving a request from the user ata computer for an internetwork page. The method includes determiningwhether the internetwork page includes content relating to theoriginator. If the internetwork page includes content relating to theoriginator, the related originator content is replaced with otherpredetermined content.

Because a user is able to select an arbitrary originator of content, theuser is enabled to effectively “boycott” or ignore electronic contentrelating an originator of content, thus ignoring all goods and servicesprovided by the originator of content through the internetwork.

The details of one or more embodiments of the invention are set forth inthe accompanying drawings and the description below. Other features,objects, and advantages of the invention will be apparent from thedescription and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram of a multimedia computer system.

FIG. 2 is a block diagram of a typical network computing environment.

FIG. 3 is a screen shot of a browser displaying a web page.

FIG. 4 is a block diagram of a content control system according to theinvention.

FIGS. 5 and 12 are flow charts of procedures for recognizing andremoving content in the content control system of FIG. 4.

FIG. 6 is a flow chart of a procedure for setting user preferences inthe content control system of FIG. 4.

FIG. 7 is a screen shot of a browser displaying a preference window forsetting user preferences in the content control system of FIG. 4.

FIG. 8 is a flow chart of a procedure for activating a set ofreplacement rules in the content control system of FIG. 4.

FIG. 9 is a block diagram of different types of designator strings forremoved content.

FIG. 10 is a flow chart of a procedure for inserting new content into auser-accessed document.

FIG. 11 is a screen shot of a browser displaying inserted new content.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

Referring to FIG. 4, a system 400 may be used to recognize data orcontent that a user might experience and replace the recognized datawith substantive data, information, or content. This system 400 operateswith the complete support, legal authority, and command of the user,based on the user's objectives.

In FIG. 4, an observation program 405 is implemented by and stored at acomputer to observe events that occur in a computer system 410. Theobservation program 405 may reside at one or more locations in thecomputer system 410. For example, the observation program 405 may resideat a user's client computer 415. The user's client computer 415 includesany computer system such as the computer system of FIG. 1. Thus, theclient computer 415 may be a desktop personal computer, a laptopcomputer, a networked computer, a cellular telephone, or a personaldata/digital assistant.

If the client computer 415 is connected to a network, then the user'sclient computer 415 makes requests from a server computer 420 thatprovides services to one or more other computer programs 425, forexample, name services, portal and application servers, electronic mail,and Internet service. The user can then access information or documentsthrough the server computer 420 using, for example, a dial-in technique,a local area network (LAN), a cable TV modem, a networked computer, aninternetwork TV hybrid connection, an online service provider, an ISDNline, SLIP or PPP modems, a dumb terminal, or a terminal emulationtechnique. For example, a web browser at the user's client computer 415might request HTML files from the network server computer 420.

The observation program 405 may reside at a server computer 420. Forexample, the observation program 405 may reside at a proxy server thatacts as an intermediary between the user's computer 415 and the Internetso that the originator of information can ensure security,administrative control, and caching service to the user. As anotherexample, the observation program 405 may reside at a firewall serverthat protects resources of a private network from other networks. Forexample, if the user's computer 415 is part of an intranet 430 thatallows its workers access to the wider Internet, the intranet may use afirewall server that prevents outsiders from accessing its own privatedata resources and for controlling what outside resources its own usershave access to. The observation program 405 may be distributed over morethan one computer, or over a network.

Examples of an observation program 405 include a kernel module, anapplication, a dynamic link library (dll), a dynamically loaded library,and/or an application device driver. The observation program 405 maycommunicate with the computer system 410 and in particular, the user'scomputer 415 and the server computer 420, using mechanisms such asapplication kernel calls, dynamic data exchange (DDE), direct RAM memoryaccess, Windows tags, Windows event and messages.

The user's computer 415 includes, among other features, an operatingsystem 435 that manages the basic operations of the computer 415 and oneor more local application programs 440 that perform some useful tasks.

An example of how the system 400 might be implemented is now discussed.A user accessing a financial planner application program residing at theuser's computer 415 permits an observation program 405 to monitorinformation exchanged between the financial planner application and theuser's operating system 435. When the observation program 405 detectsthe presence of an advertisement for a first bank, the observationprogram 405 removes the advertisement (and therefore prevents it fromreaching the user) and replaces the advertisement for the first bankwith an advertisement or service for a second bank (which presumably hasmore relevant or useful information for the user). In this situation,perhaps the first bank has an agreement with the financial planner thatpermits a financial planner application user to directly downloadinformation relating to the first bank's services and trades. However,the second bank, because it is too small or too local, may not have suchan agreement with the financial planner. Thus, the user receivesinformation about the second bank rather than the first bank. If thereceived information includes an advertisement, then the systemeffectively co-brands the first and second banks.

Such a system saves the second bank money because it need not set up anagreement with the financial planner. The first bank might provide thisservice to one or more other banks and use this service to negotiate abetter deal with the purveyor of the financial planner. The financialplanner may benefit from having fewer (but more lucrative) customers tointeract with.

In another implementation, the user might access a web site operated bythe financial planner. In this case, the observation program 405 couldmonitor content at the web site and replace an advertisement relating tothe first bank with an advertisement relating to the second bank.

Referring also to FIG. 5, the observation program 405 performs aprocedure 500 for recognizing content in the network computer system410. Content to be recognized may be content exchanged between theoperating system 435 and the local application program 440, between theoperating system and the server 420, between the server 420 and one ormore remote applications 425, and between documents within the remoteapplications. Content to be recognized may be content accessed by theoperating system 435, the application program 440, or the server 420.

Content includes, for example, text, video, sounds, images, or movies.Furthermore, content may include information associated with anoriginator of content. For example, an advertisement or notice iscontent that is designed to attract public attention or patronage. Anadvertisement generally calls public attention or patronage to aproduct, service, or business. An advertisement includes logos onapplication programs as well as icons on a desktop. Advertisements alsoinclude text, text placed in a hyper-tag, or text replaced with ahyper-tag.

The observation program 405 receives user preferences (step 505).Preferences from the user indicate some information about the contentthat the user wishes to control in addition to some information aboutthe user. The observation program 405 may receive the contentpreferences at any time and from sources other than the user. Forexample, the user may enter content preferences during a specialenrollment period or during regular operation of the user's computersystem 415. Likewise, the user may enter preferences at any time duringregular operation of the user's computer system 415 by opening apreference selection application in the observation program. Preferencesmay be received by an organization separate from user input—thus, theymay be updated at any time by the organization.

Preferences may be generated automatically by the observation program orat another server by a preference server and then accessed by theobservation program. When generating the preferences, the preferenceserver could observe information relating to the user and generate thepreferences based on these observations. For example, the preferenceserver might generate a profile of the user that includes a location ofthe user, a time the user accesses content, or a history of userinterests. The preference server may set up a preference for a bank thatis physically nearer to the user. The idea here is that the user wouldbe more likely to interact with content relating to a local bank thanwith content relating to a national or remote bank. Alternatively, manylocal banks may combine their resources to advertise only to those usersdetermined to be in a same virtual (for example, based on IP address) orgeographic region or place.

Referring also to FIG. 6, the user performs a procedure 600 forgenerating content preferences. The user may select content for theapplication program that is observed (step 605) or the user maysubscribe to an organization's or someone else's content preference(step 610). When the user selects the content, the user may specify thecontent (step 615) when wishing to block the content. The user couldspecify the originator of the content (step 620) when wishing to blockall content that originates from the originator of the content. When theapplication program is a network browser, the user could specify theInternet protocol (IP) address that identifies a particular device fromwhich the content originates and a particular network from which thecontent originates (step 625). The user specifies the IP address whenwishing to block all content that originates from the same network ordevice. The user could specify a file address (for example, a uniformresource locator (URL) address) or some substring of the file address(step 630) when wishing to block all content that originates from thesame file.

Referring to FIG. 7, an example of how such a content selection isimplemented is displayed in a network browser as a separate preferenceswindow 700. When the user first observes a Company A advertisement 702,if the user wishes to control content relating to observedadvertisement, the user selects the advertisement by, for example,meta-clicking (for example, alt-shift click) on the advertisement. Thepreference window 700 indicates to the user the different options forpreferences relating to that content. The user may click on one or moreof the appropriate boxes indicates such preferences—a box 705 selectingthe URL or a substring of the URL address 705, a box 710 selecting theadvertisement itself, a box 715 selecting all content originating fromthe originator of that advertisement, and a box 720 selecting the IPaddress.

Referring again to FIG. 6, the user may agree to accept contentpreferences indicated by another organization—such a situation mightoccur with the financial planner observation program described above. Inthat case, the user would agree to the first bank's content preferences.Then, the first bank would implement the observation program at the willof the user. As a still further example, the other organization could bea special interest organization, such as, for example, an anti-smokingorganization. The anti-smoking organization might have a list of contentproviders and/or content that it considers as being contrary to theirset of beliefs. Thus, if the user agrees to accept the anti-smokingorganization's preferences, then content originating from cigaretteproducers and/or their affiliates might be removed.

The user content preferences may be a set intersection, complement, orunion of the content preferences entered directly by the user and thecontent preferences controlled by the other party or organization.

Referring again to FIG. 5, after the observation program 405 receivesthe user preferences at step 505, the observation program 405 activatesreplacement rules based on the user preferences (step 510). Referring toFIG. 8, the observation program performs a procedure 800 for activatingreplacement rules. Designator strings for content are automaticallygenerated and updated by the observation program (step 805) and savedinto memory for future access by the observation program or any programthat might replace the content. Typically, the designator string wouldbe unique for the particular content and userID set. Once the designatorstrings are generated, a set of replacement rules for that designatorstring are updated or created (step 810). Furthermore, the observationprogram may generate a user identification (userID) based on theinformation entered by the user (step 815). The userID is implementedwhen more than a single user is controlled by the observation program.This is particularly relevant when the observation program isimplemented apart from a user's computer, for example, at a proxyserver. In that case, the observation program monitors and implementsthe requests of many users and/or the user's corresponding political,corporate, or affinity groups.

As shown in FIG. 9, a designator string 850 may include text 855associated with the content, for example, text in a URL, video, orimage. Using the example of FIG. 7, a possible substring of the textdesignator string for the Company A advertisement 702 might be“companya”. A designator string 850 may include an address 857associated with the content if the content includes an address thatwould redirect the user to another location, for example a URL or IPaddress. Using the example of FIG. 7, if the Company A advertisement 702provided a link to another web page with information about a credit cardfrom Company A, then a possible URL designator string for Company Aadvertisement 702 may be www.companya.com.

A designator string 850 may include a dimension of content 860 in thedisplayed image. For example, in FIG. 7, a dimension designator stringmay be 4.6×1.1. A designator string 850 may include the content in itsentirety 865. If the content is a simple image or text, then this ismore practical. For the Company A advertisement 702, the contentdesignator string would include the whole displayed image. A designatorstring 850 may include an identification 870 preferred by the user. Forexample, in the example of FIG. 7, perhaps the user prefers to use animage designator string of an image designator (which is included in theadvertisement 702) instead of the whole image. For example, the imagedesignator string may correspond to a credit card logo for anadvertisement originating from a credit card company. A designatorstring 850 may include an alphanumeric code 875 that is selected tocorrespond to the content. For example, the designator string for theCompany A advertisement 308 may be the code “63400344”. A designatorstring 850 may include a position 880 of the content in the display orin the file. For example, the designator string for the Company Aadvertisement 702 may be a position (4.4, 1.1). A designator string maybe any combination of the above-described designator strings implementedby string concatenation. For example, the designator string for theCompany A advertisement 702 may contain as a substring a position (4.4,1.1) and/or a dimension 4.6×1.1.

Replacement rules are a set of groups of content to be removed, contentto be inserted, and rules between them. The rules define actions thatshould take place when specific content is detected by the observationprogram 405 and actions that should take place to replace the detectedcontent with other content. The rules are written into a memory that iseither local to the user's computer or remote from the user's computer.In any case the rules are accessed by the observation program 405 or anyserver that would be involved in the replacement of content.

Rules take the form of a logic sentence, for example,

-   -   “If content1 is detected and if userID=33944, remove content1        and insert designator string451.”    -   “If content1 is detected, if content3 is detected, and if        userID=52939, remove content1 and insert designator string238.”    -   “If address65 is detected and if userID=16620, remove content        from address65 and insert designator string887.”    -   “If originator499 is detected and if userID=99232, remove        content from originator499 and insert designator string333.”    -   “If designator string=designator string453 and if userID=31109,        insert content 656.”        Rules have one general form that indicates if a predetermined        content for a particular user is detected, remove content from        application program and replace content with its corresponding        designator string. Rules have another general form that        indicates if a particular designator string for a particular        user is detected, insert other content. Rules may also include        branch conditionals and/or statements that direct execution of        the observation program.

Referring again to FIG. 5, the observation program 405 determineswhether a predetermined content is detected (step 515). The observationprogram 405 monitors for the predetermined content in a communicationchannel between the application program 440 and the operating system435, between the operating system 435 and the server 420, betweendifferent files accessed on the network 425 by the operating system 435,between the server 420 and the files on the network, at the operatingsystem 435, or at the application program 440.

In the case of monitoring content in an Internet connection, theobservation program 405 may intercept TCP/IP protocol packets and act asthe intermediary between the Internet and the user's computer 415. Theobservation program would then determine whether the TCP/IP protocolpackets, after sufficient sequencing and reassembly, includepredetermined content.

The observation program 405 may recognize content using visual,semantic, lexical, or any combination of visual, lexical, and semantictechniques. Thus, the observation program may use one technique torecognize visual content and another technique to recognize lexicalcontent.

In detecting visual images, the observation program may extract anidentifier x from the visual image—such an identifier x could be asequence of bits from the visual image. The observation program could,using a transform function H, transform this identifier x into anaddress H(x) that depends on the identifier x. Preferably, such atransformation H(x) would be relatively efficient to compute and wouldresult in a unique address H(x). If the detected address H(x) matchesmore than one of a set of predetermined addresses (each addresscorresponding to predetermined content to be blocked), then furtherinformation is required. In this case, the entire or some part of thepredetermined content may be accessed. However, most likely the detectedaddress H(x) would either match none of the predetermined addresses ormatch one of the predetermined addresses. If the detected address H(x)matches none of the predetermined addresses, the observation programcontinues to determine if a predetermined content is recognized (step515).

The transform function H could be one of several different functions,and selection of the particular transform function may be based onfactors such as content detection efficiency or content detection speed.One example of a possible transform function H is a mid-square transferfunction. The mid-square transfer function squares the identifier xobtained from the analyzed content and then extracts an appropriatenumber of bits from the middle of the squared value to obtain a finaladdress H(x). The choice of the number of bits extracted from the middleof the squared value can be chosen to be any number—the greater thenumber of bits, the greater the chance that the resultant final addressH(x) is unique to that content. Another example of a transform functionH is a division transfer function that is equal to the remainder of theidentifier x divided by some number M.

The transform function H could be a folding transform function thatpartitions the identifier into several parts, each part being of thesame length except for the last, adds the parts together, and thenextracts an arbitrary number from the added parts to obtain the address.For example, if the identifier were 110101010011110, then110+101+010+011+110 would yield the address. The observation program cananalyze the visual image most quickly using the folding transformfunction.

The observation program may use the transform function H to detect apredetermined content other than visual images. For example a largeblock of text may be transformed in a similar way as a visual image. Asknown to those skilled in the art, such transform functions describedabove are quite sensitive to small changes in a bit sequence. If thereis a slight modification to the original bit sequence or bit sequenceerrors, an alternative function may be selected to mitigate the effectof such random or deliberate changes to the incident bit sequence. Othertechniques such as content based retrieval, segmentation, or extractionof feature attributes known to those skilled in the art may be appliedinstead of the above referenced function.

The observation program may use optical character recognition (OCR)techniques to detect the predetermined content. In this case, theobservation program may recognize characters in the predeterminedcontent. During OCR processing, the observation program analyzes theimage for light and dark areas in order to identify each alphabeticletter or digit. When a character is recognized, it may be convertedinto an ASCII code.

The observation program may use a parsing algorithm to recognize lexicalinformation. Subsequent to OCR or visual images, embedded naturallanguage may be parsed. The observation program would then break up thecontent (for example, the nouns (objects), verbs (methods), and theirattributes or options) into parts that can then be managed by otherprogramming. The observation program may also check to see that allinput has been provided that is necessary.

The observation program may recognize images using a database lookuptechnique. Thus, previously identified content may be stored into adatabase and the observation program would search this database usingany of the well known searching techniques, such as index key lookup,OCR, or computer vision algorithms. In index key lookup, an index keygenerated for the image is searched for in an index database.Furthermore, the observation program may recognize some content based onother similarly recognized content. Another example of a database lookuptechnique is a training image technique. In this technique, a detectedimage may be classified as being similar or very different from a set oftraining images. For example, one may compile a large number of imagesof an object like the White House. Any detected image may then beclassified as either “containing the White House” or “not containing theWhite House”. The observation program may take into account the positionor relative position of the content on a given page for recognitionpurposes.

As described above, the observation program 405 may, based on thereceived user preferences, search for predetermined content in a textstring of the URL 630, in an IP address corresponding to the URL 625, inthe originator of content 620, or in the content itself 615. All of therecognition techniques discussed above may be used to detectpredetermined content in any of these forms. For example, a stringcomparison may be used to detect a text string or substring of the URLor an IP address.

Since the URL frequently indicates the originator of content through thedomain name, the text in the URL is often useful when recognizingcontent. Additionally, if only the IP address is provided, then nameserver lookup of the domain may be necessary to determine an originatorof content. Within the content itself, OCR and/or logo recognition maybe employed to detect a brand associated with the content. It should benoted that an originator of content may or may not be associated withthe brand associated with the content. For example, GTE may be anoriginator of an advertisement for a product from IBM. Moreover, theservice provider or the content provider may be the originator ofcontent.

If the observation program recognizes content as predetermined content(step 515), then the observation program 405 proceeds to remove therecognized predetermined content from the file accessed by the user(step 520).

Once the observation program 405 has targeted and removed the contentfor replacement, the observation program determines the designatorstring according to the replacement rules and using the userId andpreferences. Thus, the observation program 405 would then insert thedesignator string 850 into the file to be received by the user (step525).

Referring also to FIG. 10, once the designator string 850 is insertedinto the file, a replacement server (such as the server 420, theobservation program 405, or some other server accessed by the computersystem 410) may perform a procedure 1000 to replace the designatorstring 850 with a replacement content. For example, if the designatorstring 850 is a URL address 857 such as the www.companya.com addressused in the example of FIG. 7, then the replacement server may replacethat URL address with another address such as www.companyb.com andinsert an advertisement link 1100 for a Company B credit card, as shownin FIG. 11. As another example, if the designator string 850 for theCompany A advertisement is an alphanumeric code, then the replacementserver may replace the alphanumeric code with a Company B credit cardadvertisement, as shown in FIG. 11.

The replacement server first detects the presence of the designatorstring (step 1005) using any visual or lexical techniques that aredescribed above with respect to detecting the predetermined content. Forexample, the replacement server could search the document for a codethat would indicate the removed content and/or the content to beinserted in place of the removed content. Then, using the replacementrules, the replacement server inserts a replacement content (step 1010).

The replacement content can be cached on the user's computer or it canbe read over the network by the replacement server. The replacementcontent may be white space—that is, the replacement server may simplyremove the designator string. Or, in the case of graphical or visualinformation, the replacement content could be white space of a specifieddimension. The replacement content could be a decorative image of aspecified dimension.

The techniques for content replacement detailed above may be used by aconsumer wishing to remove all content from a particular source, and ineffect boycotting all content from that source. For example, if theconsumer wishes to boycott a company that sells fur coats, the consumercould use the techniques for content replacement to remove all contentcoming from that company.

The techniques, methods, and systems described here may findapplicability in any computing or processing environment in whichelectronic content may be viewed, accessed or otherwise manipulated.

Various implementations of the systems and techniques described here maybe realized in digital electronic circuitry, or in computer hardware,firmware, software, or in combinations thereof. A system or otherapparatus that uses one or more of the techniques and methods describedhere may be implemented as a computer-readable storage medium,configured with a computer program, where the storage medium soconfigured causes a computer system to operate on input and/or generateoutput in a specific and predefined manner. Such a computer system mayinclude one or more programmable processors that receive data andinstructions from, and transmit data and instructions to, a data storagesystem, and suitable input and output devices.

Each computer program may be implemented in a high-level procedural orobject-oriented programming language, or in assembly or machine languageif desired; and in any case, the language may be a compiled orinterpreted language. Suitable processors include, by way of example,both general and special purpose microprocessors.

Generally, a processor will receive instructions and data from aread-only memory and/or a random access memory. Storage devices suitablefor tangibly embodying computer program instructions and data includeall forms of non-volatile memory, including semiconductor memorydevices, such as EPROM, EEPROM, and flash memory devices; magnetic diskssuch as internal hard disks and removable disks; magneto-optical disks;and CD-ROM disks.

Any of the foregoing may be supplemented by, or implemented in,specially-designed ASICs (application-specific integrated circuits).

A number of embodiments of the present invention have been described.Nevertheless, it will be understood that various modifications may bemade without departing from the spirit and scope of the invention.Accordingly, other embodiments are within the scope of the followingclaims.

For example, as shown in FIG. 12, the observation program 405 mayperform a procedure 1200 to directly insert alternative predeterminedcontent into the file without the use of a designator string. Examplesof replacement rules for this embodiment are:

-   -   “If address65 is detected and if userID=00021, remove content        from address65 and insert content484.”    -   “If originator499 is detected and if userID=99232, remove        content from originator499 and insert content from originator3.”        In the procedure of FIG. 12, the observation program 405        receives user preferences (step 1205), activates replacement        rules (step 1210), determines if predetermined content is        present (step 1215), and deletes the predetermined content (step        1220). Then the observation program inserts new content into the        location of the deleted content (step 1225).

The observation program 405 may gather statistical information relatingto content accessed by the user. This statistical information may beuser or affinity group specific. The statistical information may then bepublished or offered for sale to interested organizations.

The system 400 may be used by a content provider that is supported by aservice provider to replace a certain percentage of advertisements withadvertisement relating to the service provider. In exchange, the serviceprovider agrees to accept such advertising as a form of payment from thecontent provider for access to network links such as T1 or T3 lines,DSL, or cable modems.

The system 400 may be used to insert a hyperlink for a term in adocument. For example, if a document accessed by the user includes theword “sports”, the observation program 405 could insert or append to theword a hyperlink to content relating to sports, for example a hyperlinkto the CNN sports section. Thus, whenever the word “sports” appears in aweb page, the observation program 405 would append or insert thehyperlink www.cnn.com/cnnsi. The observation program 405 would insertsuch hyperlinks based on the user preferences. For example, if the userindicated an interest in sports or an interest in sports from CNN, thenthe observation program 405 would create a replacement rule such as “if‘sports’ is detected and if userID=54232, add link to www.cnn.com/cnnsi.

1. An observation program stored in a non-transitory computer-readablestorage medium, comprising instructions to cause a processor to: receivecontent which includes at least one term; generate a replacement rulebased on a user preference, the replacement rule comprising a term to bereplaced and a hyperlink relating to said term to be replaced; identifyeach instance of the term to be replaced in the at least one term of thereceived content; and replace said each instance of the term to bereplaced with the hyperlink according to the replacement rule, whereinthe replacement rule comprises an identifier associated with the userand wherein said each instance of the term to be replaced is replacedwith the hyperlink based, at least in part, on the identifier associatedwith the user of the content.
 2. The observation program of claim 1,wherein the content is a document.
 3. The observation program of claim1, wherein the content is a web page.
 4. The observation program ofclaim 1, wherein the observation program further comprises instructionsto cause the processor to display the content to the user after saideach instance of the term to be replaced has been replaced.